package com.turing.post.capitalaccounts.util;

import java.io.Serializable;
import java.math.BigInteger;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

/**
 * 银行帐户入账流水
 * 
 * @author liun
 * @date 2013-05-29
 */
@SuppressWarnings("serial")
@Entity
@Table(name = "BANKACCOUNTDETAIL")
public class BankAccountDetail implements Serializable {
	// 银行账户入账流水ID
	private BigInteger bankAccDetailId;
	// 银行帐户ID
	private BigInteger bankAccountId;
	// 银行记账流水号
	private String bankAccSeqNo;
	// 录入人机构号
	private String createBranchNo;
	// 录入人
	private BigInteger operId;
	// 录入时间
	private Date createTime;
	// 审核人机构号
	private String authBranchNo;
	// 审核人
	private BigInteger authOperId;
	// 审核时间
	private Date authTime;
	// 导入文件ID
	private BigInteger importFileID;
	// 凭证号
	private String voucherNo;
	// 凭证金额
	private BigInteger voucherAmount;
	// 凭证摘要
	private String voucherRemark;
	// 凭证图片Id
	private BigInteger voucherImageId;
	// 付款人银行账户ID
	private BigInteger paidBankAccountId;
	// 累计借方发生额
	private BigInteger debitAmount;
	
	/**
	 * 长款
	 */
	public static final String LENGHTSECTION_LENGTH = "1";
	public static final String LENGHTSECTION_ALL = "0";
	

	/**
	 * 0 自动核对一致
	 */
	public static final String STATUS_AUTOCHECK = "0";
	/**
	 * 1 人工核对一致
	 */
	public static final String STATUS_MANUALLYCHECK = "1";
	/**
	 * 2 未核对
	 */
	public static final String STATUS_NOCHECK = "2";

	/**
	 * 3 现金上缴已撤销
	 */
	public static final String Status_Cancel = "3";

	/**
	 * 9 银行入账流水审核不通过，与银行实际账对应不上
	 */
	public static final String Status_CheckError = "4";

	/**
	 * 9 创建状态银行入账流水查询审核时无体现
	 */
	public static final String Status_Input = "9";

	// 状态
	private String stauts;

	/**
	 * 0-机构现金上缴
	 */
	public static final String Cash_PaidType = "0";

	/**
	 * 1-转账资金
	 */
	public static final String Tran_PaidType = "1";
	private String paidType;// 银行入账方式 Char(1)
	
	private Date authTranDate;

	// 备注
	private String remark;

	@Id
	@Column(name = "BANKACCDETAILID", nullable = false)
	public BigInteger getBankAccDetailId() {
		return bankAccDetailId;
	}

	public void setBankAccDetailId(BigInteger bankAccDetailId) {
		this.bankAccDetailId = bankAccDetailId;
	}

	@Column(name = "BANKACCOUNTID", nullable = false)
	public BigInteger getBankAccountId() {
		return bankAccountId;
	}

	public void setBankAccountId(BigInteger bankAccountId) {
		this.bankAccountId = bankAccountId;
	}

	@Column(name = "BANKACCSEQNO", nullable = true)
	public String getBankAccSeqNo() {
		return bankAccSeqNo;
	}

	public void setBankAccSeqNo(String bankAccSeqNo) {
		this.bankAccSeqNo = bankAccSeqNo;
	}

	@Column(name = "CREATEBRANCHNO", nullable = false)
	public String getCreateBranchNo() {
		return createBranchNo;
	}

	public void setCreateBranchNo(String createBranchNo) {
		this.createBranchNo = createBranchNo;
	}

	@Column(name = "OPERID", nullable = false)
	public BigInteger getOperId() {
		return operId;
	}

	public void setOperId(BigInteger operId) {
		this.operId = operId;
	}

	@Column(name = "CREATETIME", nullable = false)
	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	@Column(name = "AUTHBRANCHNO", nullable = true)
	public String getAuthBranchNo() {
		return authBranchNo;
	}

	public void setAuthBranchNo(String authBranchNo) {
		this.authBranchNo = authBranchNo;
	}

	@Column(name = "AUTHOPERID", nullable = true)
	public BigInteger getAuthOperId() {
		return authOperId;
	}

	public void setAuthOperId(BigInteger authOperId) {
		this.authOperId = authOperId;
	}

	@Column(name = "AUTHTIME", nullable = true)
	public Date getAuthTime() {
		return authTime;
	}

	public void setAuthTime(Date authTime) {
		this.authTime = authTime;
	}

	@Column(name = "IMPORTFILEID", nullable = true)
	public BigInteger getImportFileID() {
		return importFileID;
	}

	public void setImportFileID(BigInteger importFileID) {
		this.importFileID = importFileID;
	}

	@Column(name = "VOUCHERNO", nullable = false)
	public String getVoucherNo() {
		return voucherNo;
	}

	public void setVoucherNo(String voucherNo) {
		this.voucherNo = voucherNo;
	}

	@Column(name = "VOUCHERAMOUNT", nullable = false)
	public BigInteger getVoucherAmount() {
		return voucherAmount;
	}

	public void setVoucherAmount(BigInteger voucherAmount) {
		this.voucherAmount = voucherAmount;
	}

	@Column(name = "VOUCHERREMARK", nullable = true)
	public String getVoucherRemark() {
		return voucherRemark;
	}

	public void setVoucherRemark(String voucherRemark) {
		this.voucherRemark = voucherRemark;
	}

	@Column(name = "VOUCHERIMAGEID", nullable = true)
	public BigInteger getVoucherImageId() {
		return voucherImageId;
	}

	public void setVoucherImageId(BigInteger voucherImageId) {
		this.voucherImageId = voucherImageId;
	}

	@Column(name = "PAIDBANKACCOUNTID", nullable = true)
	public BigInteger getPaidBankAccountId() {
		return paidBankAccountId;
	}

	public void setPaidBankAccountId(BigInteger paidBankAccountId) {
		this.paidBankAccountId = paidBankAccountId;
	}

	@Column(name = "DEBITAMOUNT", nullable = false)
	public BigInteger getDebitAmount() {
		return debitAmount;
	}

	public void setDebitAmount(BigInteger debitAmount) {
		this.debitAmount = debitAmount;
	}

	@Column(name = "STATUS", nullable = false)
	public String getStauts() {
		return stauts;
	}

	public void setStauts(String stauts) {
		this.stauts = stauts;
	}

	@Column(name = "paidType")
	public String getPaidType() {
		return paidType;
	}

	public void setPaidType(String paidType) {
		this.paidType = paidType;
	}

	@Column(name = "REMARK", nullable = true)
	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	@Column(name = "AUTHTRANDATE", nullable = true)
	public Date getAuthTranDate() {
		return authTranDate;
	}

	public void setAuthTranDate(Date authTranDate) {
		this.authTranDate = authTranDate;
	}
}
